package com.nchu.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nchu.VO.ProductVO;
import com.nchu.common.util.PageResult;
import com.nchu.entity.Product;
import com.nchu.entity.User;
import com.nchu.mapper.ProductMapper;
import com.nchu.service.IProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author yaojie
 * @since 2025-01-09
 */
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
    //分页查询菜品信息
    @Override
    public PageResult<Product> findByPage(Integer page, Integer pageSize) {
        //调用mybatisPlus的方法完成分页
        Page<Product> pg = this.page(new Page<>(page, pageSize));
        // 返回分页的结果
        return new PageResult<>(pg.getRecords(),pg.getTotal());
    }
     //按菜品名查找菜品
    @Override
    public PageResult<Product> search(Integer page, Integer pageSize, ProductVO productVO) {
        // 进行分页带条件查询
        QueryWrapper<Product> wrapper = new QueryWrapper<>();
        //按照菜品名模糊查找菜品
        wrapper.like(StrUtil.isNotBlank(productVO.getProductName()), "product_name", productVO.getProductName());
        // 根据价格区间查找菜品
        if (productVO.getPrice() != null) {
            wrapper.ge("price", productVO.getPrice()); // 如果有最低价格，查询价格大于等于minPrice的菜品
        }
        Page<Product> pg = this.page(new Page<>(page, pageSize), wrapper);
        return new PageResult<>(pg.getRecords(),pg.getTotal());
    }
    //添加菜品信息
    @Override
    public boolean addProduct(Product product) {
        return this.save(product);
    }
}
